package cn.liyunqi.ttv.main.constant;

import cn.liyunqi.ttv.main.action.TTVActionUtil;

import java.util.ArrayList;
import java.util.List;

public enum VoiceType {
    //小燕 青年女声 中英文（普通话） xiaoyan 默认
    Xunfei_xiaoyan("05","(青年女声-中英文-普通话)_小燕",ChangeCompany.Kedaxunfei,"xiaoyan"),
    //小研 青年女声 中英文（普通话） vixy
    Xunfei_xiaoy("10","(青年女声-中英文-普通话)_小研",ChangeCompany.Kedaxunfei,"vixy"),
    //小琪 青年女声 中英文（普通话） vixq
    Xunfei_xiaoqi("11","(青年女声-中英文-普通话)_小琪",ChangeCompany.Kedaxunfei,"vixq"),
    Baidu_Woman("01","(青年女声-中英文-普通话)_电子音",ChangeCompany.Baidu,"0"),
    //小宇 青年男声 中英文（普通话） xiaoyu
    Xunfei_xiaoyu("06","(青年男声-中英文-普通话)_小宇",ChangeCompany.Kedaxunfei,"xiaoyu"),
    //小峰 青年男声 中英文（普通话） vixf
    Xunfei_xiaofeng("12","(青年男声-中英文-普通话)_小峰",ChangeCompany.Kedaxunfei,"vixf"),
    //per	String	发音人选择, 0为女声，1为男声，
    //3为情感合成-度逍遥，4为情感合成-度丫丫，默认为普通女
    Baidu_xiaodu("03","(青年男声-中英文-普通话)_小度",ChangeCompany.Baidu,"3"),
    Baidu_man("02","(青年男声-中英文-普通话)_电子音",ChangeCompany.Baidu,"1"),
    Baidu_xiaoya("04","(童年女声-中英文-普通话)_小丫",ChangeCompany.Baidu,"4"),
    //小新 童年男声 汉语（普通话） vixx
    Xunfei_xiaoxin("20","(童年男声-中文-普通话)_小新",ChangeCompany.Kedaxunfei,"vixx"),
    //楠楠 童年女声 汉语（普通话） vinn
    Xunfei_nannan("21","(童年女声-中文-普通话)_楠楠",ChangeCompany.Kedaxunfei,"vinn"),
    //老孙 老年男声 汉语（普通话） vils
    Xunfei_laosun("22","(老年男声-中文-普通话)_老孙",ChangeCompany.Kedaxunfei,"vils"),
    //小梅 青年女声 中英文（粤语） vixm
    Xunfei_xiaomei("13","(青年女声-中英文-粤语)_小梅",ChangeCompany.Kedaxunfei,"vixm"),
    //小莉 青年女声 中英文（台湾普通话） vixl
    Xunfei_xiaoli("14","(青年女声-中英文-台湾普通话)_小莉",ChangeCompany.Kedaxunfei,"vixl"),
    //小蓉 青年女声 汉语（四川话） vixr
    Xunfei_xiaorong("15","(青年女声-中文-四川话)_小蓉",ChangeCompany.Kedaxunfei,"vixr"),
    //小芸 青年女声 汉语（东北话） vixyun
    Xunfei_xiaoyun("16","(青年女声-中文-东北话)_小芸",ChangeCompany.Kedaxunfei,"vixyun"),
    //小坤 青年男声 汉语（河南话） vixk
    Xunfei_xiaokun("17","(青年男声-中文-河南话)_小坤",ChangeCompany.Kedaxunfei,"vixk"),
    //小强 青年男声 汉语（湖南话） vixqa
    Xunfei_xiaoqiao("18","(青年男声-中文-湖南话)_小强",ChangeCompany.Kedaxunfei,"vixqa"),
    //小莹 青年女声 汉语（陕西话） vixying
    Xunfei_xiaoyin("19","(青年女声-中文-陕西)_小莹",ChangeCompany.Kedaxunfei,"vixying");

    //凯瑟琳 青年女声 英文 Catherine
    //Xunfei_kaiseling("07","(青年女声-英文)_凯瑟琳",ChangeCompany.Kedaxunfei,"Catherine"),
    //亨利 青年男声 英文 henry
    //Xunfei_henli("08","(青年男声-英文)_亨利",ChangeCompany.Kedaxunfei,"henry"),
    //玛丽 青年女声 英文 vimary
    //Xunfei_mali("09","(青年女声-英文)_玛丽",ChangeCompany.Kedaxunfei,"vimary"),

    private String id;

    private String name;

    private ChangeCompany type;

    private String value;

    public String getId() {
        return id;
    }

    public String getName() {
        return name;
    }

    public ChangeCompany getType() {
        return type;
    }

    public String getValue() {
        return value;
    }

    VoiceType(String id, String name, ChangeCompany type, String value){
        this.id = id;
        this.name = name;
        this.type = type;
        this.value = value;
    }

    public static VoiceType getVoiceTypeById(String id) {
        for (VoiceType e : VoiceType.values()) {
            if (e.id.equals(id)) {
                if(TTVActionUtil.isWindows()){
                    return e;
                }else{
                    if(e.type.equals(ChangeCompany.Baidu)){
                        return e;
                    }
                }

            }
        }
        return null;
    }
    public static List<VoiceType> getVoiceTypeByType(ChangeCompany type) {
        List<VoiceType> typeList = new ArrayList<>();
        for (VoiceType e : VoiceType.values()) {
            if (e.type.equals(type)) {
                typeList.add(e);
            }
        }
        return typeList;
    }

    public static VoiceType[] valuesForSystem(){
        if(TTVActionUtil.isWindows()){
            return values();
        }else{
            VoiceType[] arr = new VoiceType[4];
            return getVoiceTypeByType(ChangeCompany.Baidu).toArray(arr);
        }
    }
}
